import tkinter as tk

class CompoundWidget(tk.Frame):
    def __init__(self, master, text, on_listbox_click=None, **kwargs):
        super().__init__(master, **kwargs)
        self.text = text
        self.on_listbox_click = on_listbox_click  # 绑定列表项点击事件
        self.create_widgets()

    def create_widgets(self):
        # 创建一个按钮
        self.button = tk.Button(self, text=f"{self.text} 按钮")
        self.button.pack(side=tk.LEFT, padx=5, pady=5)

        # 创建一个列表框
        self.listbox = tk.Listbox(self)
        self.listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
        self.listbox.bind('<<ListboxSelect>>', self.on_listbox_select)  # 绑定列表框选择事件

        # 向列表框添加一些内容
        for i in range(5):
            self.listbox.insert(tk.END, f"{self.text} 列表项 {i+1}")

        # 绑定按钮点击事件
        self.button.config(command=self.on_button_click)

    def on_listbox_select(self, event):
        # 获取当前选中的列表项
        selected_items = self.listbox.curselection()
        if selected_items:
            # 获取选中的列表项的值
            selected_value = self.listbox.get(selected_items)
            print(f"选中的列表项：{selected_value}")
            # 如果有绑定的事件处理函数，则调用
            if self.on_listbox_click:
                self.on_listbox_click(selected_value)

    def on_button_click(self):
        # 按钮点击事件处理函数
        print("按钮被点击了")